<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
	<script type="text/javascript">
		/*
			运算符：
				1.比较运算符
				2.算术运算符
				3.逻辑运算符
				4.赋值运算符

		*/
		/*
			1.比较运算符：比较两个值的大小，返回一个boolean值，true/false

			>大于
			<小于
			>= 大于等于
			<= 小于等于
			==判断 值 是否相等
			=== 全等于 判断 值 和 类型 是否都相等
			!= 不等于 判断值不相等
			!== 不全等于 判断值和类型不相等
		*/
		console.log('2' == 2) //true
		console.log('2' === 2) //false
		console.log('2' != 2) //false
		console.log('2' !== 2) //true

		/*
			2.逻辑运算符： 用于测量变量 或者值之间的逻辑关系，返回boolean类型的值
			&& 逻辑与 '且' 都真才真，有假就假
			|| 逻辑或 ' 或' 有真就真，都假才假
			！ 逻辑非 取反
		*/

		let a = 4;
		let b = 6;
		let c = 10;
		console.log(a < b && b < c)//true
		console.log(a > b && b < c)//false

		//&& 与
		let d = 1;
		let e = 2;
		console.log('---',d < 3 && e < 3)
		console.log(!0) //true
		console.log(!1) //false
		console.log(!'') //true
		console.log(!null)//true
		console.log(!undefined)//true
		console.log(!NaN)//true
		/*
			3.算术运算符

			+
			-
			*
			/
			%取余
			--自减
			++自加
		*/
		let num1 = 5;
		let num2 = 3;
		console.log(num1 % num2)//2
		console.log(num1 / num2)//1.666666666667

		let num3 = true//1
		let num4 = false//0
		let num5 = '2'
		let num6 = null//0
		let num7 = undefined//

		console.log(num1 + num3) //6
		console.log(num3 + num4) //1
		console.log(num1 + num5) //'52'
		console.log(num5 - num2) //'2' - 3 = -1
		console.log(num2 + num6) //3
		console.log(num5 + num3) //'2'+ true = '2true'
		console.log(num3 + num7) //true + undefined = NaN

		/*
			隐式转换：在js的运算中，如果两边数据类型不一样，这时编译器会自动将两边数据做一个数据类型转换，转成统一的数据类型在计算，不需要手动转换

			1.运算中 null，布尔值，纯数字的字符串 都能进行隐式转换，但是如果不是纯数字 或者undefined 都会返回NaN
			2.隐式转换中 "+"比较特殊，碰到字符串之后会直接进行字符串拼接
			3.隐式转换规则
			对象---->字符串---->数字<-----布尔值
			4.利用隐式转换 快速进行 数据类型转换
			转字符串：+ //+ ''
			转数字： - * / %
		    转布尔：! !!
		*/
		console.log([1,2,3] == "1,2,3")//[]转换成了"" "1，2，3" == "1,2,3"
		console.log([] == 0 ) //true []转换成"" "" 转成0 0==0
		console.log(true == "1") //true
		console.log("5true" - 1 ) //NaN
		console.log(1 - undefined) //NaN
		console.log(100 + '')//快速转字符串
		console.log('100' - 0)//快速转数字类型

		// a++ 先用后加    ++a先加后用
		let n1 = 0;
		let n2 = 1;

		//  1(2)      3
		// n1 = n2++ + ++n2//
		// 1(2)  1
		n1 = n2++ + --n2//2 1
		console.log(n1,n2)//4 3

		let n3 = 4;
		let n4 = 6;
		let n5 = n3++ + ++n4 - n3-- + --n3
		// n3-3   n4- 7  n5-9

		/*
			4.赋值运算符
			=
			+=
			-=
			*=
			/=
			%=

		*/
		let x = 1;
		let y = 2;

		y += x; //y = y + x =2 +1
		y -= x; //y = y - x
		y *= x; //y= y * x
		y %= x;//y= y % x
		y /= x;// y = y / x
	</script>
</body>
</html>